package com.test;

/*
import java.io.FileInputStream;

public class Example03 {
    public static void main(String[] args) throws Exception {
        // 创建一个文件字节输入流，并指定源文件名称
        FileInputStream inPut = new FileInputStream("src/com/test/test.txt");
        int b = 0;           // 定义一个int类型的变量b，记住每次读取的一个字节
        while (true) {
            b = inPut.read(); // 变量b记住读取的一个字节
            if (b == -1) { // 如果读取的字节为-1，跳出while循环
                break;
            }
            System.out.println(b); // 否则将b写出
        }
        inPut.close();
    }
}

 */

/*
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Example03 {
    public static void main(String[] args) throws Exception {
        // 创建一个字节输入流，用于读取当前目录下source文件夹中的"堆糖下载的风景图.jpg"文件
        InputStream in = new FileInputStream("src/source/堆糖下载的风景图.jpg");
        // 创建一个文件字节输出流，用于将读取的数据写入target目录下的文件中
        OutputStream out = new FileOutputStream("src/target/b.jpg");
        int len; // 定义一个int类型的变量len，记住每次读取的一个字节
        // 获取复制文件前的系统时间
        long beginTime = System.currentTimeMillis();
        while ((len = in.read()) != -1) { // 读取一个字节并判断是否读到文件末尾
            out.write(len); // 将读到的字节写入文件
        }
        // 获取文件复制结束时的系统时间
        long endTime = System.currentTimeMillis();
        System.out.println("复制文件所消耗的时间是：" + (endTime - beginTime) + "毫秒");
        in.close();
        out.close();
    }
}

 */

/*
import java.io.FileOutputStream;
import java.io.OutputStream;

public class Example03{
    public static void main(String[] args) throws Exception {
        // 创建一个文件字节输出流，并指定输出文件名称
        OutputStream out = new FileOutputStream("src/com/test/example.txt");
        String str = "传智教育";
        byte[] b = str.getBytes();
        for (int i = 0; i < b.length; i++) {
            out.write(b[i]);
        }
        out.close();
    }
}

 */

/*
import java.io.FileOutputStream;
import java.io.OutputStream;

public class Example03{
    public static void main(String[] args) throws Exception {
        //创建文件输出流对象，并指定输出文件名称和开启文件内容追加功能
        OutputStream out = new FileOutputStream("src/com/test/example.txt ", true);
        String str = "欢迎你!";
        //将字符串存入byte类型的数组中
        byte[] b = str.getBytes();
        for (int i = 0; i < b.length; i++) {
            out.write(b[i]);
        }
        out.close();
    }
}

 */


/*
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class Example03 {
    public static void main(String[] args) throws Exception {
        // 创建一个字节输入流，用于读取当前目录下source文件夹中的"堆糖下载的风景图.jpg"文件
        InputStream in = new FileInputStream("src/source/堆糖下载的风景图.jpg");
        // 创建一个文件字节输出流，用于将读取的数据写入target目录下的文件中
        OutputStream out = new FileOutputStream("src/target/b.jpg");
        // 以下是用缓冲区读写文件
        byte[] buff=new byte[1024]; //定义一个字节数组,作为缓冲区

        int len; // 定义一个int类型的变量len读取读入缓冲区的字节流
        long beginTime = System.currentTimeMillis();
//        while ((len = in.read()) != -1) { // 读取一个字节并判断是否读到文件末尾
//            out.write(len); // 将读到的字节写入文件
//        }
        while((len=in.read(buff)) != -1) {
            out.write(buff,0,len);  //从第一个字节开始,向文件写入len个字节
        }
        // 获取文件复制结束时的系统时间
        long endTime = System.currentTimeMillis();
        System.out.println("复制文件所消耗的时间是：" + (endTime - beginTime) + "毫秒");
        in.close();
        out.close();
    }

}

 */


import java.io.FileReader;

public class Example03 {
    public static void main(String[] args) throws Exception {
        //创建一个FileReader对象用R读取文件中的字符
        FileReader reader = new FileReader("src/com/test/reader.txt");
        int ch;     // 定义一个变量用于记录读取的字符
        while ((ch = reader.read()) != -1) {    // 循环判断是否读取到文件的末尾
            System.out.print((char)ch);   // 不是字符流末尾就转为字符打印
//            System.out.print(ch);
        }
        reader.close();// 关闭文件读取流，释放资源
    }
}

